﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace Urgencias.Modelo
{
    class Persona
    {
        string run;
        string nombre;
        string apellidoPaterno;
        string apellidoMaterno;
        DateTime fechaNacimiento;
        char sexo;

        public char Sexo
        {
            get { return sexo; }
            set { sexo = value; }
        }

        /*public string Telefono
        {
            get { return telefono; }
            set { telefono = value; }
        }

        public string Direccion
        {
            get { return direccion; }
            set { direccion = value; }
        }*/

        public DateTime FechaNacimiento
        {
            get { return fechaNacimiento; }
            set { fechaNacimiento = value; }
        }

        public string ApellidoMaterno
        {
            get { return apellidoMaterno; }
            set { apellidoMaterno = value; }
        }

        public string ApellidoPaterno
        {
            get { return apellidoPaterno; }
            set { apellidoPaterno = value; }
        }

        public string Nombre
        {
          get { return nombre; }
          set { nombre = value; }
        }

        public string Run
        {
            get { return run; }
            set { run = value; }
        }

        public bool validarDigito(string mirut)
        {
            bool resultado=false;
            string ingresado;
            if (mirut.Length >= 2)
            {
                string temp_mirut = Regex.Replace(mirut, @"\.|-|_", "");
                ingresado = temp_mirut.Last() + "";
                temp_mirut = temp_mirut.Remove(temp_mirut.Length - 1);
                string calculado =digitoVerificador(int.Parse(temp_mirut));
                resultado = string.Equals(calculado, ingresado);
            }
            if (resultado) Run=mirut;
            return resultado;
        }

        private string digitoVerificador(int rut)
        {
            int Digito;
            int Contador;
            int Multiplo;
            int Acumulador;
            string RutDigito;
            //string result;

            Contador = 2;
            Acumulador = 0;

            while (rut != 0)
            {
                Multiplo = (rut % 10) * Contador;
                Acumulador = Acumulador + Multiplo;
                rut = rut/10;
                Contador = Contador + 1;
                if (Contador == 8)
                {
                    Contador = 2;
                }
            }

            Digito = 11 - (Acumulador % 11);
            RutDigito = Digito.ToString().Trim();
        
            if (Digito == 10 )
            {
                return "K";
            }
            if (Digito == 11)
            {
                return "0";
            }
            else
                return RutDigito+"";
            
       
        }
    }
}
